iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Python

pythonGUI學習筆記系列 第 9

Day 9: PySide6 下拉選單 (QComboBox)

  • 分享至 

  • xImage
  •  

QComboBox 下拉選單

QComboBox : 下拉選單小部件,允許用戶從一個選項列表中進行選擇。可以動態地添加選項,並處理選擇變更的事件。

QComboBox 添加、插入、刪除選項

QComboBox 添加選項的方法是 addItem(str) 。插入選項是使用 insertItem(index,str) 。刪除選項則是使用 removeItem(index)

  • addItem(str) : 添加單個元件,下面是添加 "選項1" 和 "選項2" 的範例。
from PySide6.QtWidgets import QApplication, QComboBox , QWidget

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QComboBox 範例")
        self.setGeometry(100, 100, 200, 100)

        combo_box = QComboBox(self)             #創建一個QComboBox
        combo_box.setGeometry(0, 0, 200, 20)#設置QComboBox 大小
        combo_box.addItem("選項 1")         #添加選項 1
        combo_box.addItem("選項 2")         #添加選項 2

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()

添加選項
如果要一次添加多個選項則可以使用 addItems([]) 添加多個元件,他可以直接使用序列來增加,下面是一個直接添加 ['a','b','c',''d] 序列的範例。

from PySide6.QtWidgets import QApplication, QComboBox , QWidget

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QComboBox 範例")
        self.setGeometry(100, 100, 200, 100)

        combo_box = QComboBox(self)            #創建一個QComboBox
        combo_box.setGeometry(0, 0, 200, 20)    #設置QComboBox 大小
        combo_box.addItems(['a','b','c','d'])   #一次新增 a、b、c、d 選項

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()

一次添加多個

  • insertItem(index,str) : 插入單個選項,也有插入多個選項 insertItems(index,[]) 。 下面範例是在"選項1" 和 "選項2" 中間插入 "插入的選項" 。
from PySide6.QtWidgets import QApplication, QComboBox , QWidget

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QComboBox 範例")
        self.setGeometry(100, 100, 200, 100)

        combo_box = QComboBox(self)             #創建一個QComboBox
        combo_box.setGeometry(0, 0, 200, 20)    #設置QComboBox 大小
        combo_box.addItem("選項 1")             #添加選項 1
        combo_box.addItem("選項 2")             #添加選項 2
        combo_box.insertItem(1,"插入的選項")    #插入選項在 "選項1" 和 "選項2" 中間

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()

插入

  • removeItem(index) : 刪除選項。下面範例是把已經建好的選項[a,b,c,d],把b給刪除。
from PySide6.QtWidgets import QApplication, QComboBox , QWidget

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QComboBox 範例")
        self.setGeometry(100, 100, 200, 100)

        combo_box = QComboBox(self)            #創建一個QComboBox
        combo_box.setGeometry(0, 0, 200, 20)    #設置QComboBox 大小
        combo_box.addItems(['a','b','c','d'])   #一次新增 a、b、c、d 選項
        combo_box.removeItem(1)

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()

https://ithelp.ithome.com.tw/upload/images/20240918/20169254inlVlj6UBJ.png

QComboBox 常用的信號

  • currentIndexChanged.connect(function) : 當選項改變時使用。下面是一個當選向改變時,標籤的文字也會改變。
from PySide6.QtWidgets import QApplication, QComboBox, QLabel, QVBoxLayout, QWidget

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QComboBox 範例")
        self.setGeometry(100, 100, 300, 200)

        self.combo_box = QComboBox()
        self.combo_box.addItems(["a","b"])
        self.combo_box.currentIndexChanged.connect(lambda: self.label.setText("改變了"))

        self.label = QLabel("選擇一個選項", self)

        layout = QVBoxLayout(self)
        layout.addWidget(self.combo_box)
        layout.addWidget(self.label)

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()


QComboBox 常用的功能

  • currentText() : 當前選擇選項的文字。下面範例是當更換了選項,標籤文字會顯示你選的選項文字。
from PySide6.QtWidgets import QApplication, QComboBox, QLabel, QVBoxLayout, QWidget

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QComboBox 範例")
        self.setGeometry(100, 100, 300, 200)

        self.combo_box = QComboBox()
        self.combo_box.addItems(["a","b","c","d"])
        self.combo_box.currentIndexChanged.connect(lambda: self.label.setText(self.combo_box.currentText()))

        self.label = QLabel("選擇一個選項", self)

        layout = QVBoxLayout(self)
        layout.addWidget(self.combo_box)
        layout.addWidget(self.label)

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()
  • currentIndex() : 當前選擇的選項的索引值。下面範例是當更換了選項,標籤文字會顯示你選的選項索引。
from PySide6.QtWidgets import QApplication, QComboBox, QLabel, QVBoxLayout, QWidget

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QComboBox 範例")
        self.setGeometry(100, 100, 300, 200)

        self.combo_box = QComboBox()
        self.combo_box.addItems(["a","b","c","d"])
        self.combo_box.currentIndexChanged.connect(lambda: self.label.setText(f"{self.combo_box.currentIndex()}"))

        self.label = QLabel("選擇一個選項", self)

        layout = QVBoxLayout(self)
        layout.addWidget(self.combo_box)
        layout.addWidget(self.label)

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()
  • setDisabled(bool) : 設定是否禁用。
from PySide6.QtWidgets import QApplication, QComboBox, QLabel, QVBoxLayout, QWidget

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QComboBox 範例")
        self.setGeometry(100, 100, 300, 200)

        combo_box = QComboBox(self)
        combo_box.addItems(["a","b","c","d"])
        combo_box.setGeometry(0, 0, 200, 20)#設置QComboBox 大小
        combo_box.setDisabled(True)

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()

總結

  • QComboBox 添加、插入、刪除選項
功能 方法
添加選項(單個) addItem(str)
添加選項(多個) addItems([])
插入選項(單個) insertItem(index,str)
插入選項(多個) insertItems(index,[])
刪除選項 removeItem(index)
  • QComboBox 常用的信號
功能 方法
更換選項時觸發 currentIndexChanged.connect(function)
  • QComboBox 常用的功能
功能 方法
當前選項的文字 currentText()
當前選項的索引 currentIndex()
設定是否禁用 setDisabled(bool)

上一篇
Day 8 PySide6 實作簡易記事本
下一篇
Day 10: PySide6 複選按鈕 (QCheckBox)和單選按鈕 (QRadioButton)
系列文
pythonGUI學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言